package com.ssyt.yt1.day18.map;

import java.util.HashMap;
import java.util.Map;
import java.util.WeakHashMap;

/**
 * Map的强引用和弱引用的演示（了解）
 * 
 * @author Administrator
 *
 */
public class WeakHashMapDemo {

	/**
	 * 强引用
	 */
	public static void test1() {
		// 此时的map为强引用，需要等待方法结束后自行被GC回收
		Map<String, Integer> map = new HashMap<>();
		for (int i = 0; i < 100; i++) {
			map.put(String.valueOf(i), i);
			// 由于强引用的关系，这里的回收是没有用！
			System.gc();
			System.out.println(map.size());
		}
	}

	/**
	 * 弱引用(key不能使用Integer)
	 */
	public static void test2() {
		Map<String, Integer> map = new WeakHashMap<>();
		for (int i = 0; i < 100; i++) {
			map.put(String.valueOf(i), i);
			System.out.println(map.size());
			System.gc();
		}
	}

	public static void main(String[] args) {
		// test1();
		test2();
	}
}
